<?php
class ClientesController extends AppController
{
	var $name='Clientes';
	//var $helpers=array('Html','Form');
	var $components = array('SwiftMailer');
	var $uses=array('Cliente','User','Direccione');
	var $paginate=array(
		'limit'=>20,
		'page'=>1,
		'order'=>array(
				'User.username'=>'asc'));
	
  
	function index()
	{
		$this->Cliente->recursive=1;
		$this->User->recursive=1;
		$direcciones=$this->Direccione->find('all');
		$this->set('direcciones',$direcciones);
		$clientes=$this->Cliente->find('all');
		$usuarios=$this->User->find('all');
		$this->set('clientes',$clientes);
		$this->set('usuarios',$this->paginate('User'));             
	}
	
	function add()
	{
		if (!$this->Session->read('idUser'))
		{
			if (!empty($this->data))
			{	
				$this->User->create();
				$this->User->set($this->data);
				$this->User->Cliente->set($this->data);
				if($this->User->Cliente->validates())
				{
					if($this->User->validates())
					{			
						if ($this->Cliente->User->save($this->data,array('validate' => 'first')))
						{
							$this->data['Cliente']['user_id']=$this->User->id;
							if($this->Cliente->save($this->data))
							{
								if(!$this->RequestHandler->isAjax())
								{
									$envioMail=$this->emailRegistro($this->data);
									if($envioMail==true){
										$this->Session->write('conf','Tus datos han sido registrados');
										$this->redirect(array('controller'=>'clientes','action'=>'confirmar'));
									}
								}
								else
								{
									$envioMail=$this->emailRegistro($this->data);
									if($envioMail==true)
									{
										$this->Session->write('conf','Tus datos han sido registrados');
										$this->redirect(array('controller'=>'clientes','action'=>'confirmar'));
									}
								}
								$this->set('closeModalbox',true);
							}
							else
							{
								$this->Session->setFlash(__('Ha Ocurrido un Error. Prueba de nuevo'),true);
								//$this->Session->write('conf','Ha Ocurrido un Error. Prueba de nuevo');
							}
						}
						else
						{
							$this->Session->setFlash(__('Ha Ocurrido un Error. Prueba de nuevo'),true);
							//$this->Session->write('conf','Ha Ocurrido un Error. Prueba de nuevo');
						}
					}
					else
					{
						$errorsCliente=$this->User->Cliente->invalidFields();
						$errorsUser=$this->User->invalidFields();
						$this->set('errorsCliente',$errorsCliente);
						$this->set('errorsUser',$errorsUser);
					}				
				}
				else
				{
					$errorsCliente=$this->User->Cliente->invalidFields();
					$errorsUser=$this->User->invalidFields();
					$this->set('errorsCliente',$errorsCliente);
					$this->set('errorsUser',$errorsUser);
				}
				//}
			}
			$direcciones=$this->Cliente->Direccione->find('list',array('fields'=>'Direccione.torre'));
			$this->set('direcciones',$direcciones);
		}
		else{
			//$this->Session->setFlash('Debe cerrar esta sesi&oacute;n antes de registrar un nuevo usuario');
			$this->redirect('/clientes/transSession');
		}
	}
	function consultar($id=null)
	{
		if($id!=null)
		{
			$this->User->recursive=1;
			//$this->User->id=$id;
			$this->set('cliente',$this->User->find('all',array('conditions'=>array('id'=>$id))));
			$this->set('direcciones',$this->Direccione->find('all'));
		}
	}
	function consultarAdmin($id=null)
	{
		$this->User->recursive=1;
		$this->set('cliente',$this->User->find('all',array('conditions'=>array('id'=>$id))));
	}
	
	function transSession(){}
	function emailRegistro($data)
	{	
		$this->SwiftMailer->smtpType = 'ssl'; 
        $this->SwiftMailer->smtpHost = 'host.caracasclick.com'; 
        $this->SwiftMailer->smtpPort = 465; 
        $this->SwiftMailer->smtpUsername = 'administrador@prontodelicafe.com'; 
        $this->SwiftMailer->smtpPassword = 'admin""0'; 
        $this->SwiftMailer->sendAs = 'html'; 
        $this->SwiftMailer->from = 'administrador@prontodelicafe.com'; 
        $this->SwiftMailer->fromName = 'Administrador Pronto Deli'; 
        //$this->SwiftMailer->to = $correo; 
		$this->SwiftMailer->to = $data['Cliente']['mail'];
		
		$this->set('nombre',$data['User']['nombre']);
		$this->set('username',$data['User']['username']);
		$this->set('clave',$data['User']['password']);
		$this->set('correo',$data['Cliente']['mail']);
		$this->set('telefono',$data['Cliente']['telefono']);
		$this->set('celular',$data['Cliente']['celular']);
		$this->set('direccion',$data['Cliente']['direccione_id']);
		$this->set('empresa',$data['Cliente']['empresa']);
		$this->set('piso',$data['Cliente']['piso']);
		$this->set('oficina',$data['Cliente']['oficina']);
		$this->set('sexo',$data['Cliente']['sexo']);
		$retorno=false;
		
		
		try { 
            while(!$this->SwiftMailer->send('registro', 'Informaci&oacute;n de Registro Pronto Deli')) { 
                $this->log("Error Enviando Email");
				return $retorno;
				//exit();
            } 
        } 
        catch(Exception $e) { 
              $this->log("Failed to send email: ".$e->getMessage());
		}
		$retorno=true;
		return $retorno;
		
	}
	
	function confirmar(){}
	function cambiado(){}
	function cambiadoAdmin(){}
	
	function delete($id=null){
		$this->User->recursive=1;
		if(!$id)
		{	
			$this->Session->setFlash('Cliente invalido, por favor verifique');
			$this->redirect(array('action'=>'index'),null,true);
		}
		
		//if($this->Cliente->del($id) && $this->User->del($id) )
		if ($this->User->del($id,true))
		
		{
			$this->Session->setFlash('Cliente #'.$id.' Borrado');
			$this->redirect(array('controller'=>'clientes','action'=>'index'),null,true);
		}
	}
	
	
	function edit($id=null){
		if (!$id)
		{
			$this->Session->setFlash('Operaci&oacute;n Inv&aacute;lida');
			$this->redirect(array('controller'=>'menus','action'=>'index'),null,true);
		}
		if (empty($this->data))
		{
			$this->data=$this->User->find(array('id'=>$id));
		}
		else
		{
			$this->User->id=$this->data['Cliente']['user_id'];
			$this->User->set($this->data);
			$this->User->Cliente->set($this->data);
			if($this->User->Cliente->validates())
			{			
				if ($this->User->validates())
				{
						if($this->User->save($this->data))
						{
							//$this->data['Cliente']['user_id']=$this->User->id;
							$postMail=$this->data['Cliente']['mail'];
							if($this->data['Cliente']['sexo']==0){
								$textSexo="Masculino";
							}
							else{
								$textSexo="Femenino";
							}
							if($this->User->Cliente->updateAll(
							array(
									//'Cliente.sexo'=>'"'.$this->data['Cliente']['sexo'].'"',
									'Cliente.sexo'=>'"'.$textSexo.'"',
									'Cliente.mail'=>'"'.$postMail.'"',
									'Cliente.telefono'=>'"'.$this->data['Cliente']['telefono'].'"',
									'Cliente.celular'=>'"'.$this->data['Cliente']['celular'].'"',
									'Cliente.direccione_id'=>$this->data['Cliente']['direccione_id'],
									'Cliente.empresa'=>'"'.$this->data['Cliente']['empresa'].'"',
									'Cliente.piso'=>$this->data['Cliente']['piso'],
									'Cliente.oficina'=>'"'.$this->data['Cliente']['oficina'].'"',
									'Cliente.recibirmail'=>$this->data['Cliente']['recibirmail']),
								array('Cliente.user_id'=>$this->data['Cliente']['user_id'])))
							//if($this->Cliente->save($this->data))
							{
								$this->Session->write('modif','Los cambios han sido guardados');
								$this->User->id=$this->data['Cliente']['user_id'];
								$nuevoNombre=$this->User->field('nombre',array('id'=>$this->data['Cliente']['user_id']));
								$this->Session->write('nombre',$nuevoNombre);
								$this->redirect(array('controller'=>'clientes','action'=>'cambiado'),null,true);
								//$this->render('');
							}
							else
							{
								$this->Session->setFlash('La operaci&oacute;n no se realizo, Intente de nuevo');
								$this->redirect(array('controller'=>'pedidos','action'=>'index'),null,true);
							}
						}
						else
						{
							$this->Session->setFlash('La operaci&oacute;n no se realizo, Intente de nuevo');
							$this->redirect(array('controller'=>'pedidos','action'=>'index'),null,true);
						}
				}		
				else
				{
					$errorsUser=$this->User->invalidFields();
					//$this->Session->setFlash('Error en datos, por favor verifique');
				}				
			}
			else
			{
				$errorsCliente=$this->User->Cliente->invalidFields();
				//$this->Session->setFlash('Error en datos, por favor verifique');
			}	
		}
		$direcciones=$this->Cliente->Direccione->find('list',array('fields'=>'Direccione.torre'));
		$this->set('direcciones',$direcciones);
	}
	
	function search()
	{
		$results=$this->User->search($this->data['Cliente']['q']);
		//$idBusqueda=$this->User->find('all',array('fields'=>array('User.id'),'conditions'=>array('User.username'=>$this->data['Cliente']['q'])));
		$idBusqueda=$this->User->field('id',array('User.username'=>$this->data['Cliente']['q']));
		$clientesAsociado=$this->Cliente->find('all',array('conditions'=>array('Cliente.user_id'=>$idBusqueda)));
		$this->set('results',$results); 
		$this->set('clientesAsociado',$clientesAsociado);
		$direcciones=$this->Direccione->find('all');
		$this->set('direcciones',$direcciones);
	}
	
	function transAdmin(){}
	
	function adminAdd()
	{
		if(!empty($this->data))
		{
			$this->User->create();
			$this->User->set($this->data);
			$this->User->Cliente->set($this->data);
			/**/
			// obviando las validaciones para hacerlas por jquery
			/**/
			if($this->Cliente->User->save($this->data))
			{
				$this->data['Cliente']['user_id']=$this->User->id;
				$this->data['Cliente']['admin']=1;
				$this->data['Cliente']['direccione_id']=0;
				$this->data['Cliente']['empresa']='No';
				$this->data['Cliente']['piso']=1;
				$this->data['Cliente']['oficina']='No';
				if($this->Cliente->save($this->data))
				{
					if(!$this->RequestHandler->isAjax())
					{
						$envioMail=$this->envioRegistroAdmin($this->data);
						if($envioMail==true){
							$this->Session->write('conf','Los datos se han registrado exitosamente');
							//$this->redirect(array('controller'=>'users','action'=>'adminIndex'));
							$this->redirect('/clientes/transAdmin');
						}
					}
					else{
						$envioMail=$this->envioRegistroAdmin($this->data);
						if($envioMail==true){
							$this->Session->write('conf','Los datos se han registrado exitosamente');
							//$this->redirect(array('controller'=>'users','action'=>'adminIndex'));
							$this->redirect('/clientes/transAdmin');
						}
					}
					$this->set('closeModalbox',true);
				}
				else{
					$this->Session->write('conf','Ha ocurrido un error intente de nuevo');
				}
			}
			else{
				$this->Session->write('conf','Ha ocurrido un error intente de nuevo');
			}
		}
		else{
			$direcciones=$this->Cliente->Direccione->find('list',array('fields'=>'Direccione.torre'));
			$this->set('direcciones',$direcciones);
		}
	}
	
	function editAdmin($id=null)
	{
		if(!$id){
			$this->Session->setFlash('Operaci&0acute;n Inv&aacute;lida');
			$this->redirect(array('controller'=>'admins','action'=>'index'));
		}
		if(empty($this->data)){
			$this->data=$this->User->find(array('id'=>$id));
		}
		else{
			$this->User->id=$this->data['Cliente']['user_id'];
			$this->User->set($this->data);
			
			if($this->User->save($this->data))
			{
				$this->data['Cliente']['user_id']=$id;
				$this->data['Cliente']['admin']=1;
				$this->data['Cliente']['direccione_id']=0;
				$this->data['Cliente']['empresa']='No';
				$this->data['Cliente']['piso']=1;
				$this->data['Cliente']['oficina']='No';
				$this->data['Cliente']['recibirmail']=0;
				if($this->data['Cliente']['sexo']==0){
					$this->data['Cliente']['sexo']='Masculino';
				}
				else{
					$this->data['Cliente']['sexo']='Femenino';
				}
				if($this->Cliente->save($this->data)){
					$this->User->id=$this->data['Cliente']['user_id'];
					$nuevoNombre=$this->User->field('nombre',array('id'=>$this->data['Cliente']['user_id']));
					$this->Session->write('nombre',$nuevoNombre);
					$this->Session->write('modifAdmin','Los cambios han sido guardados');
					$this->redirect(array('controller'=>'clientes','action'=>'cambiadoAdmin'));
				}
				else{
					$this->Session->write('modifAdmin','La operaci&oacute;n no se realizo CLIENTE, Intente de nuevo');
					$this->redirect(array('controller'=>'clientes','action'=>'cambiadoAdmin'));
				}
			}
			else{
				$this->Session->write('modifAdmin','La operaci&oacute;n no se realizo USER, Intente de nuevo');
				$this->redirect(array('controller'=>'clientes','action'=>'cambiadoAdmin'));
			}
		}
	}
	function envioRegistroAdmin($data)
	{
		$this->SwiftMailer->smtpType = 'ssl'; 
        $this->SwiftMailer->smtpHost = 'host.caracasclick.com'; 
        $this->SwiftMailer->smtpPort = 465; 
        $this->SwiftMailer->smtpUsername = 'administrador@prontodelicafe.com'; 
        $this->SwiftMailer->smtpPassword = 'admin""0'; 
        $this->SwiftMailer->sendAs = 'html'; 
        $this->SwiftMailer->from = 'administrador@prontodelicafe.com'; 
        $this->SwiftMailer->fromName = 'Administrador Pronto Deli'; 
		$this->SwiftMailer->to = $data['Cliente']['mail'];
		
		$this->set('nombre',$data['User']['nombre']);
		$this->set('username',$data['User']['username']);
		$this->set('clave',$data['User']['password']);
		$this->set('correo',$data['Cliente']['mail']);
		$this->set('telefono',$data['Cliente']['telefono']);
		$this->set('celular',$data['Cliente']['celular']);
		$this->set('sexo',$data['Cliente']['sexo']);
		$retorno=false;
		
		
		try { 
            while(!$this->SwiftMailer->send('registroadmin', 'Informaci&oacute;n de Registro Pronto Deli')) { 
                $this->log("Error Enviando Email");
				return $retorno;
				//exit();
            } 
        } 
        catch(Exception $e) { 
              $this->log("Failed to send email: ".$e->getMessage());
		}
		$retorno=true;
		return $retorno;
	}
	
	function checkCedula()
	{
		
		$this->autoRender = false;
		$this->layout = 'ajax';
		Configure::write('debug', 0);
		$username=$_REQUEST['cedula'];
		if($this->User->field('id',array('username'=>$username))!=null){
			//echo"var msg=true";
			//echo true;
			$msg='true';
		}
		else{
			//echo "var msg=false";
			//echo false;
			$msg='false';
		}
		echo $msg;
		//$this->set('value',$msg);
	}
}
?>